﻿
#pragma once
//	1、平台原因(移植原因)：不是所有的硬件平台都能访问任意地址上的任意数据的；
//某些硬件平台只能在某些地址处取某些特定类型的数据，否则抛出硬件异常。 　　
//	 2、性能原因：数据结构(尤其是栈)应该尽可能地在自然边界上对齐。
//原因在于，为了访问未对齐的内存，处理器需要作两次内存访问；而对齐的内存访问仅需要一次访问。 
inline uintptr_t
align_binary (uintptr_t ptr, uintptr_t alignment)
{
	uintptr_t const tmp = alignment - 1;
	return (ptr + tmp) & (~tmp);
}

//二进制包含1的个数
int func( int x)
{
	int count = 0;
	while (x)
	{
		count++;
		x = x&(x-1);
	}
	return count;
}